//class Solution {
//public:
//    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
//        set<int> st1(nums1.begin(), nums1.end());
//        set<int> st2(nums2.begin(), nums2.end());
//
//        vector<int> v;
//        for (auto& e : st1)
//        {
//            if (st2.count(e))
//                v.push_back(e);
//        }
//
//        return v;
//    }
//};
//
//class Solution {
//public:
//    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
//        set<int> st1(nums1.begin(), nums1.end());
//        set<int> st2(nums2.begin(), nums2.end());
//
//        vector<int> v;
//        set<int>::iterator it1 = st1.begin();
//        set<int>::iterator it2 = st2.begin();
//
//        while (it1 != st1.end() && it2 != st2.end())
//        {
//            if (*it1 < *it2) it1++;
//            else if (*it1 > *it2) it2++;
//            else
//            {
//                v.push_back(*it1);
//                it1++;
//                it2++;
//            }
//        }
//
//        return v;
//    }
//};